# 反向输出一个链表

"""
在Python中反向输出一个单向链表，你可以使用递归或者迭代的方法。下面是使用迭代方法实现的示例代码
"""


class Node:
    def __init__(self, data):
        self.data = data
        self.next = None


class LinkedList:
    def __init__(self):
        self.head = None

    def print_list(self):
        """打印链表中的所有元素"""
        current = self.head
        while current:
            print(current.data, end=" -> ")
            current = current.next
        print("None")

    def print_reverse(self):
        """反向打印链表中的所有元素"""
        current = self.head
        stack = []

        # 使用栈来反转链表的输出
        while current:
            stack.append(current.data)
            current = current.next

        # 弹出栈中的元素，实现反向输出
        while stack:
            print(stack.pop(), end=" -> ")


# 使用LinkedList类
ll = LinkedList()
ll.head = Node(1)
second = Node(2)
third = Node(3)

ll.head.next = second
second.next = third

print("正向输出:")
ll.print_list()  # 正向打印链表

print("\n反向输出:")
ll.print_reverse()  # 反向打印链表
